package cn.historia.domain.strategy.service.armory;

import java.util.Date;

/**
 * @package: cn.historia.domain.strategy.service.armory
 * @className: IStrategyDispatch
 * @author: 云溪
 * @description: 策略抽奖的调度
 * @date: 2025/7/18 22:18
 * @version: 1.0
 */
public interface IStrategyDispatch {

    /**
     * 获取奖品Id：随机数生成抽奖
     * @param strategyId 策略Id
     * @return
     */
    Integer getRandomAwardId(Long strategyId);

    /**
     * 获取抽奖策略装配的随机结果
     *
     * @param strategyId 权重ID
     * @return 抽奖结果
     */
    Integer getRandomAwardId(Long strategyId, String ruleWeightValue);

    /**
     * 根据策略ID和奖品ID，扣减奖品缓存库存
     *
     * @param strategyId 策略ID
     * @param awardId    奖品ID
     * @param endDateTime 活动结束时间
     * @return 扣减结果
     */
    Boolean subtractionAwardStock(Long strategyId, Integer awardId, Date endDateTime);


}
